
from rest_framework.viewsets import ModelViewSet
from meiduo_admin.paginators import MyPage
from meiduo_admin.serializers.order_serializers import *


class OrderViewSet(ModelViewSet):

    queryset = OrderInfo.objects.all()
    serializer_class = OrderInfoModelSerializer
    pagination_class = MyPage

    def get_queryset(self):
        keyword = self.request.query_params.get('keyword')
        if keyword:
            return self.queryset.filter(order_id__contains=keyword)
        return self.queryset.all()

    # 重写该函数的目录：当前视图中，控制不同接口(视图函数)，使用不同的序列化器
    def get_serializer_class(self):
        # 核心问题：如何判断出此次请求是哪个视图函数？！
        # 答：self.action属性记录的就是视图函数名称；
        # 结论：在非视图函数中，可以通过self.action来判断此次请求使用的视图函数。

        # 如果请求列表数据 --> 视图函数是list
        if self.action == 'list':
            return OrderInfoModelSerializer

        # 如果请求单一详情数据 --> 视图函数是retrieve
        if self.action == 'retrieve':
            return OrderInfoDetailSerializer

        # 如果请求修改订单状态 --> 视图函数是retrieve
        if self.action == 'partial_update':
            return OrderInfoDetailSerializer










